home *** CD-ROM | disk | FTP | other *** search
/ Chip 2006 June / CHIP 2006-06.2.iso / program / freeware / Democracy-0.8.2.exe / xulrunner / python / folder.py < prev    next >
Encoding:
Python Source  |  2006-04-10  |  1.2 KB  |  54 lines

  1. import feed
  2. from copy import copy
  3. from database import DDBObject,defaultDatabase
  4.  
  5. ##
  6. # Implements a folder, which contains a list of feeds
  7. class Folder(DDBObject):
  8.     def __init__(self, title):
  9.     self.feeds = []
  10.     self.title = title
  11.     self.feedlist = defaultDatabase.filter(lambda x:isinstance(x,feed.Feed) and x.getID() in self.feeds)
  12.     DDBObject.__init__(self)
  13.  
  14.     #FIXME: lock
  15.     def getTitle(self):
  16.     ret = self.title
  17.     return ret
  18.  
  19.     ##
  20.     # Adds a feed to the folder
  21.     def addFeed(self, theFeed):
  22.     if isinstance(theFeed,feed.Feed):
  23.         theFeed = theFeed.getID()
  24.     self.beginChange()
  25.     try:
  26.         self.feeds.append(theFeed)
  27.     finally:
  28.         self.endChange()
  29.  
  30.     ##
  31.     # Called by pickle during serialization
  32.     def __getstate__(self):
  33.     temp = copy(self.__dict__)
  34.     temp["feedlist"] = None
  35.     return temp
  36.  
  37.     ##
  38.     # Called by pickle during deserialization
  39.     def __setstate__(self,state):
  40.     self.__dict__ = state
  41.     self.feedlist = defaultDatabase.filter(lambda x:isinstance(x,feed.Feed) and x.getID() in self.feeds)
  42.  
  43.     ##
  44.     # Removes a feed from the folder
  45.     def removeFeed(self, theFeed):
  46.     if isinstance(theFeed,feed.Feed):
  47.         theFeed = theFeed.getID()
  48.     self.beginChange()
  49.     try:
  50.         self.feeds.remove(theFeed)
  51.     finally:
  52.         self.endChange()
  53.     
  54.